home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
The World of Computer Software.iso
/
wdasm13.zip
/
HELLO1.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-01-14
|
20KB
|
1,165 lines
TITLE WDASM Example Program
.286
.MODEL SMALL
INCLUDE HELLO2.INC
EXTRN DefWindowProc:FAR
EXTRN GetMessage:FAR
EXTRN TranslateMessage:FAR
EXTRN FatalExit:FAR
EXTRN DispatchMessage:FAR
EXTRN GetVersion:FAR
EXTRN GetDosEnvironment:FAR
EXTRN LocalAlloc:FAR
EXTRN LocalRealloc:FAR
EXTRN LocalFree:FAR
EXTRN FatalAppExit:FAR
EXTRN LocalSize:FAR
EXTRN UpdateWindow:FAR
EXTRN GlobalRealloc:FAR
EXTRN GlobalSize:FAR
EXTRN InitApp:FAR
EXTRN PostQuitMessage:FAR
EXTRN LockSegment:FAR
EXTRN UnlockSegment:FAR
EXTRN WaitEvent:FAR
EXTRN GetClientRect:FAR
EXTRN GetModuleFileName:FAR
EXTRN BeginPaint:FAR
EXTRN EndPaint:FAR
EXTRN CreateWindow:FAR
EXTRN ShowWindow:FAR
EXTRN LoadCursor:FAR
EXTRN LoadIcon:FAR
EXTRN RegisterClass:FAR
EXTRN InitTask:FAR
EXTRN GetStockObject:FAR
EXTRN DrawText:FAR
EXTRN Dos3Call:FAR
EXTRN __winflags:FAR
.CODE
Procedure0000 PROC NEAR
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
Procedure0000 ENDP
Procedure0010 PROC NEAR
ENTER 002EH, 0
CMP WORD PTR [BP+10], 0
JZ L001DH
JMP NEAR PTR L0085H
L001DH: MOV WORD PTR [BP-46], 0003H
MOV WORD PTR [BP-44], OFFSET WNDPROC
MOV WORD PTR [BP-42], SEG WNDPROC
MOV WORD PTR [BP-40], 0000H
MOV WORD PTR [BP-38], 0000H
MOV AX, WORD PTR [BP+12]
MOV WORD PTR [BP-36], AX
PUSH 0
PUSH 0
PUSH 7F00H
CALL FAR PTR LoadIcon
MOV WORD PTR [BP-34], AX
PUSH 0
PUSH 0
PUSH 7F00H
CALL FAR PTR LoadCursor
MOV WORD PTR [BP-32], AX
PUSH 0
CALL FAR PTR GetStockObject
MOV WORD PTR [BP-30], AX
MOV WORD PTR [BP-28], 0000H
MOV WORD PTR [BP-26], 0000H
MOV AX, 0010H
MOV DX, DS
MOV WORD PTR [BP-24], AX
MOV WORD PTR [BP-22], DX
LEA AX, WORD PTR [BP-46]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR RegisterClass
L0085H: MOV AX, 0010H
MOV DX, DS
PUSH DX
PUSH AX
MOV AX, 00B0H
MOV DX, DS
PUSH DX
PUSH AX
PUSH 00CFH
PUSH 0
PUSH 8000H
PUSH 8000H
PUSH 8000H
PUSH 8000H
PUSH 0
PUSH 0
PUSH WORD PTR [BP+12]
PUSH 0
PUSH 0
CALL FAR PTR CreateWindow
MOV WORD PTR [BP-2], AX
PUSH AX
PUSH WORD PTR [BP+4]
CALL FAR PTR ShowWindow
PUSH WORD PTR [BP-2]
CALL FAR PTR UpdateWindow
L00C8H: LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
PUSH 0
PUSH 0
PUSH 0
CALL FAR PTR GetMessage
AND AX, AX
JZ L00F8H
LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR TranslateMessage
LEA AX, WORD PTR [BP-20]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR DispatchMessage
JMP SHORT L00C8H
L00F8H: MOV AX, WORD PTR [BP-16]
LEAVE
RET 000AH
Procedure0010 ENDP
Procedure00FF PROC NEAR
NOP
Procedure00FF ENDP
WNDPROC PROC FAR PUBLIC
PUSH DS
POP AX
NOP
INC BP
PUSH BP
MOV BP, SP
PUSH DS
MOV DS, AX
SUB SP, 002CH
PUSH SI
PUSH DI
MOV SI, WORD PTR [BP+14]
MOV AX, WORD PTR [BP+12]
JMP NEAR PTR L0172H
NOP
L011AH: PUSH SI
LEA AX, WORD PTR [BP-36]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR BeginPaint
MOV DI, AX
PUSH SI
LEA AX, WORD PTR [BP-44]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR GetClientRect
PUSH DI
MOV AX, 00BEH
MOV DX, DS
PUSH DX
PUSH AX
PUSH -1
LEA AX, WORD PTR [BP-44]
MOV DX, SS
PUSH DX
PUSH AX
PUSH 37
CALL FAR PTR DrawText
PUSH SI
LEA AX, WORD PTR [BP-36]
MOV DX, SS
PUSH DX
PUSH AX
CALL FAR PTR EndPaint
XOR AX, AX
XOR DX, DX
JMP SHORT L0197H
NOP
L0162H: PUSH 0
CALL FAR PTR PostQuitMessage
XOR AX, AX
XOR DX, DX
JMP SHORT L0197H
NOP
JMP SHORT L017FH
L0172H: CMP AX, 0002H
JZ L0162H
CMP AX, 000FH
JNZ L017FH
JMP NEAR PTR L011AH
L017FH: PUSH SI
PUSH WORD PTR [BP+12]
PUSH WORD PTR [BP+10]
PUSH WORD PTR [BP+8]
PUSH WORD PTR [BP+6]
CALL FAR PTR DefWindowProc
JMP SHORT L0197H
NOP
MOV WORD PTR [BP+14], SI
L0197H: POP DI
POP SI
SUB BP, 2
MOV SP, BP
POP DS
POP BP
DEC BP
RETF 000AH
WNDPROC ENDP
Procedure01A4 PROC NEAR
L01A4H DW OFFSET __winflags
L01A6H: MOV AL, -1
PUSH AX
CALL NEAR PTR Procedure0346
L01ACH:: XOR BP, BP
PUSH BP
CALL FAR PTR InitTask
OR AX, AX
JZ L01A6H
MOV WORD PTR D0054H, ES
ADD CX, 0100H
JB L01A6H
MOV WORD PTR D001EH, CX
MOV WORD PTR D0020H, SI
MOV WORD PTR D0022H, DI
MOV WORD PTR D0024H, BX
MOV WORD PTR D0026H, ES
MOV WORD PTR D0028H, DX
CALL FAR PTR GetVersion
MOV WORD PTR D0056H, AX
MOV AH, 48
TEST WORD PTR CS:L01A4H, 0001H
JZ L01F4H
CALL FAR PTR Dos3Call
JMP SHORT L01F6H
L01F4H: INT 0021H
L01F6H: MOV WORD PTR D0058H, AX
TEST WORD PTR CS:L01A4H, 0001H
JNZ L0207H
MOV AL, 0
MOV BYTE PTR D005BH, AL
L0207H: XOR AX, AX
PUSH AX
CALL FAR PTR WaitEvent
PUSH WORD PTR D0022H
CALL FAR PTR InitApp
OR AX, AX
JZ L01A6H
CALL NEAR PTR Procedure0260
CALL NEAR PTR Procedure0422
CALL NEAR PTR Procedure05A0
CALL NEAR PTR Procedure0800
PUSH WORD PTR D0090H
PUSH WORD PTR D008EH
PUSH WORD PTR D008CH
CALL NEAR PTR Procedure0244
ADD SP, 6
PUSH AX
CALL NEAR PTR Procedure033F
MOV AX, 0015H
JMP NEAR PTR L0627H
Procedure01A4 ENDP
Procedure0244 PROC NEAR
PUSH BP
MOV BP, SP
PUSH WORD PTR D0022H
PUSH WORD PTR D0020H
PUSH WORD PTR D0026H
PUSH WORD PTR D0024H
PUSH WORD PTR D0028H
CALL NEAR PTR Procedure0010
POP BP
RET
Procedure0244 ENDP
Procedure0260 PROC NEAR
MOV AX, 3500H
TEST WORD PTR CS:L01A4H, 0001H
JZ L0273H
CALL FAR PTR Dos3Call
JMP SHORT L0275H
L0273H: INT 0021H
L0275H: MOV WORD PTR D0040H, BX
MOV WORD PTR D0042H, ES
PUSH CS
POP DS
MOV AX, 2500H
MOV DX, 0622H
TEST WORD PTR CS:L01A4H, 0001H
JZ L0295H
CALL FAR PTR Dos3Call
JMP SHORT L0297H
L0295H: INT 0021H
L0297H: PUSH SS
POP DS
MOV CX, WORD PTR D00A6H
JCXZ L02C8H
MOV ES, WORD PTR D0054H
MOV SI, WORD PTR ES:D002CH
MOV AX, WORD PTR D00A8H
MOV DX, WORD PTR D00AAH
XOR BX, BX
CALL DWORD PTR D00A4H
JAE L02BAH
JMP NEAR PTR L041CH
L02BAH: MOV AX, WORD PTR D00ACH
MOV DX, WORD PTR D00AEH
MOV BX, 0003H
CALL DWORD PTR D00A4H
L02C8H: MOV ES, WORD PTR D0054H
MOV CX, WORD PTR ES:D002CH
JCXZ L0311H
MOV ES, CX
XOR DI, DI
L02D7H: CMP BYTE PTR ES:[DI], 0
JZ L0311H
MOV CX, 000DH
MOV SI, 0032H
REPE CMPSB
JZ L02F2H
MOV CX, 7FFFH
XOR AX, AX
REPNE SCASB
JNZ L0311H
JMP SHORT L02D7H
L02F2H: PUSH ES
PUSH DS
POP ES
POP DS
MOV SI, DI
MOV DI, 0064H
MOV CL, 4
L02FDH: LODSB
SUB AL, 65
JB L030FH
SHL AL, CL
XCHG DX, AX
LODSB
SUB AL, 65
JB L030FH
OR AL, DL
STOSB
JMP SHORT L02FDH
L030FH: PUSH SS
POP DS
L0311H: MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03E3
MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03F2
MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03E3
MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03E3
MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03F2
RET
Procedure0260 ENDP
Procedure033F PROC NEAR
PUSH BP
MOV BP, SP
XOR CX, CX
JMP SHORT L0360H
Procedure033F ENDP
Procedure0346 PROC NEAR
PUSH BP
MOV BP, SP
MOV CX, 0001H
JMP SHORT L0360H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0100H
JMP SHORT L0360H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0101H
L0360H:: MOV BYTE PTR D0099H, CH
PUSH CX
OR CL, CL
JNZ L0385H
MOV SI, 022CH
MOV DI, 022CH
CALL NEAR PTR Procedure03E3
MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03E3
MOV SI, WORD PTR [BP+4]
PUSH SI
CALL NEAR PTR Procedure0800
ADD SP, 2
L0385H: MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03E3
MOV SI, 00B0H
MOV DI, 00B0H
CALL NEAR PTR Procedure03F2
CALL NEAR PTR Procedure03BA
POP AX
OR AH, AH
JNZ L03B6H
MOV AX, WORD PTR [BP+4]
MOV AH, 76
TEST WORD PTR CS:L01A4H, 0001H
JZ L03B4H
CALL FAR PTR Dos3Call
JMP SHORT L03B6H
L03B4H: INT 0021H
L03B6H: POP DI
POP SI
POP BP
RET
Procedure0346 ENDP
Procedure03BA PROC NEAR
MOV CX, WORD PTR D00A6H
JCXZ L03C7H
MOV BX, 0002H
CALL DWORD PTR D00A4H
L03C7H: PUSH DS
LDS DX, DWORD PTR D0040H
MOV AX, 2500H
TEST WORD PTR CS:L01A4H, 0001H
JZ L03DFH
CALL FAR PTR Dos3Call
JMP SHORT L03E1H
L03DFH: INT 0021H
L03E1H: POP DS
RET
Procedure03BA ENDP
Procedure03E3 PROC NEAR
L03E3H: CMP SI, DI
JAE L03F1H
DEC DI
DEC DI
MOV CX, WORD PTR [DI]
JCXZ L03E3H
CALL CX
JMP SHORT L03E3H
L03F1H: RET
Procedure03E3 ENDP
Procedure03F2 PROC NEAR
L03F2H: CMP SI, DI
JAE L0404H
SUB DI, 4
MOV AX, WORD PTR [DI]
OR AX, WORD PTR [DI+2]
JZ L03F2H
CALL DWORD PTR [DI]
JMP SHORT L03F2H
L0404H: RET
Procedure03F2 ENDP
Procedure0405 PROC NEAR
L0405H DB 0000H
Procedure0405 ENDP
Procedure0406 PROC NEAR
PUSH BP
MOV BP, SP
MOV AX, 00FCH
PUSH AX
CALL NEAR PTR Procedure0691
MOV AX, 00FFH
PUSH AX
CALL NEAR PTR Procedure0691
MOV SP, BP
POP BP
RET
Procedure0406 ENDP
Procedure041B PROC NEAR
L041BH DB 0000H
L041CH:: MOV AX, 0002H
JMP NEAR PTR L0627H
Procedure041B ENDP
Procedure0422 PROC NEAR
POP WORD PTR D009CH
MOV AX, 0104H
MOV CX, 0008H
CALL NEAR PTR Procedure06C2
MOV WORD PTR D0094H, DX
MOV WORD PTR D0092H, AX
PUSH DX
PUSH AX
PUSH WORD PTR D0022H
PUSH DX
PUSH AX
MOV AX, 0104H
PUSH AX
CALL FAR PTR GetModuleFileName
POP BX
POP ES
ADD BX, AX
MOV BYTE PTR ES:[BX], 0
MOV DX, 0001H
MOV DI, 0001H
MOV SI, 0081H
MOV DS, WORD PTR D0054H
L045CH: LODSB
CMP AL, 32
JZ L045CH
CMP AL, 9
JZ L045CH
CMP AL, 13
JZ L04D8H
OR AL, AL
JZ L04D8H
INC DI
L046EH: DEC SI
L046FH: LODSB
CMP AL, 32
JZ L045CH
CMP AL, 9
JZ L045CH
CMP AL, 13
JZ L04D8H
OR AL, AL
JZ L04D8H
CMP AL, 34
JZ L04A8H
CMP AL, 92
JZ L048BH
INC DX
JMP SHORT L046FH
L048BH: XOR CX, CX
L048DH: INC CX
LODSB
CMP AL, 92
JZ L048DH
CMP AL, 34
JZ L049BH
ADD DX, CX
JMP SHORT L046EH
L049BH: MOV AX, CX
SHR CX, 1
ADC DX, CX
TEST AL, 1
JNZ L046FH
JMP SHORT L04A8H
L04A7H: DEC SI
L04A8H: LODSB
CMP AL, 13
JZ L04D8H
OR AL, AL
JZ L04D8H
CMP AL, 34
JZ L046FH
CMP AL, 92
JZ L04BCH
INC DX
JMP SHORT L04A8H
L04BCH: XOR CX, CX
L04BEH: INC CX
LODSB
CMP AL, 92
JZ L04BEH
CMP AL, 34
JZ L04CCH
ADD DX, CX
JMP SHORT L04A7H
L04CCH: MOV AX, CX
SHR CX, 1
ADC DX, CX
TEST AL, 1
JNZ L04A8H
JMP SHORT L046FH
L04D8H: PUSH SS
POP DS
MOV WORD PTR D008CH, DI
ADD DX, DI
INC DI
SHL DI, 1
ADD DX, DI
INC DX
AND DL, -2
SUB SP, DX
MOV AX, SP
MOV WORD PTR D008EH, AX
MOV BX, AX
ADD DI, BX
PUSH SS
POP ES
LDS SI, DWORD PTR D0092H
MOV WORD PTR SS:[BX], SI
INC BX
INC BX
MOV DS, WORD PTR SS:D0054H
MOV SI, 0081H
JMP SHORT L050CH
L0509H: XOR AX, AX
STOSB
L050CH: LODSB
CMP AL, 32
JZ L050CH
CMP AL, 9
JZ L050CH
CMP AL, 13
JZ L0595H
OR AL, AL
JZ L0595H
MOV WORD PTR SS:[BX], DI
INC BX
INC BX
L0522H: DEC SI
L0523H: LODSB
CMP AL, 32
JZ L0509H
CMP AL, 9
JZ L0509H
CMP AL, 13
JZ L0592H
OR AL, AL
JZ L0592H
CMP AL, 34
JZ L055FH
CMP AL, 92
JZ L053FH
STOSB
JMP SHORT L0523H
L053FH: XOR CX, CX
L0541H: INC CX
LODSB
CMP AL, 92
JZ L0541H
CMP AL, 34
JZ L0551H
MOV AL, 92
REP STOSB
JMP SHORT L0522H
L0551H: MOV AL, 92
SHR CX, 1
REP STOSB
JAE L055FH
MOV AL, 34
STOSB
JMP SHORT L0523H
L055EH: DEC SI
L055FH: LODSB
CMP AL, 13
JZ L0592H
OR AL, AL
JZ L0592H
CMP AL, 34
JZ L0523H
CMP AL, 92
JZ L0573H
STOSB
JMP SHORT L055FH
L0573H: XOR CX, CX
L0575H: INC CX
LODSB
CMP AL, 92
JZ L0575H
CMP AL, 34
JZ L0585H
MOV AL, 92
REP STOSB
JMP SHORT L055EH
L0585H: MOV AL, 92
SHR CX, 1
REP STOSB
JAE L0523H
MOV AL, 34
STOSB
JMP SHORT L055FH
L0592H: XOR AX, AX
STOSB
L0595H: PUSH SS
POP DS
MOV WORD PTR [BX], 0000H
JMP WORD PTR D009CH
L059FH DB 0000H
Procedure0422 ENDP
Procedure05A0 PROC NEAR
PUSH BP
MOV BP, SP
PUSH DS
CALL FAR PTR GetDosEnvironment
OR AX, AX
JZ L05AFH
MOV DX, AX
L05AFH: MOV BX, DX
MOV ES, DX
XOR AX, AX
XOR SI, SI
XOR DI, DI
MOV CX, 0FFFFH
OR BX, BX
JZ L05CEH
CMP BYTE PTR ES:D0000H, 0
JZ L05CEH
L05C8H: REPNE SCASB
INC SI
SCASB
JNZ L05C8H
L05CEH: MOV AX, DI
INC AX
AND AL, -2
INC SI
MOV DI, SI
SHL SI, 1
MOV CX, 0009H
CALL NEAR PTR Procedure06C2
PUSH AX
MOV AX, SI
CALL NEAR PTR Procedure06C2
MOV WORD PTR D0090H, AX
PUSH ES
PUSH DS
POP ES
POP DS
MOV CX, DI
MOV BX, AX
XOR SI, SI
POP DI
DEC CX
JCXZ L061BH
L05F5H: MOV AX, WORD PTR [SI]
CMP AX, WORD PTR SS:D0032H
JNZ L060EH
PUSH CX
PUSH SI
PUSH DI
MOV DI, 0032H
MOV CX, 0006H
REPE CMPSW
POP DI
POP SI
POP CX
JZ L0613H
L060EH: MOV WORD PTR ES:[BX], DI
INC BX
INC BX
L0613H: LODSB
STOSB
OR AL, AL
JNZ L0613H
LOOP L05F5H
L061BH: MOV WORD PTR ES:[BX], CX
POP DS
POP BP
RET
Procedure05A0 ENDP
Procedure0621 PROC NEAR
L0621H DB 0000H
PUSH SS
POP DS
MOV AX, 0003H
L0627H:: PUSH AX
PUSH AX
CALL NEAR PTR Procedure0406
CALL NEAR PTR Procedure0691
CALL NEAR PTR Procedure0666
XOR BX, BX
OR AX, AX
JZ L0655H
MOV DI, AX
MOV AX, 0009H
CMP BYTE PTR [DI], 77
JNZ L0645H
MOV AX, 000FH
L0645H: ADD DI, AX
PUSH DI
PUSH DS
POP ES
MOV AL, 13
MOV CX, 0022H
REPNE SCASB
MOV BYTE PTR [DI-1], BL
POP AX
L0655H: PUSH BX
PUSH DS
PUSH AX
CALL FAR PTR FatalAppExit
MOV AX, 00FFH
PUSH AX
CALL FAR PTR FatalExit
Procedure0621 ENDP
Procedure0666 PROC NEAR
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
PUSH DS
POP ES
MOV DX, WORD PTR [BP+4]
MOV SI, 00E2H
L0673H: LODSW
CMP AX, DX
JZ L0688H
INC AX
XCHG SI, AX
JZ L0688H
XCHG DI, AX
XOR AX, AX
MOV CX, 0FFFFH
REPNE SCASB
MOV SI, DI
JMP SHORT L0673H
L0688H: XCHG SI, AX
POP DI
POP SI
MOV SP, BP
POP BP
RET 0002H
Procedure0666 ENDP
Procedure0691 PROC NEAR
PUSH BP
MOV BP, SP
PUSH DI
CMP WORD PTR D00A0H, 0
JZ L06BAH
PUSH WORD PTR [BP+4]
CALL NEAR PTR Procedure0666
OR AX, AX
JZ L06BAH
XCHG DX, AX
MOV DI, DX
XOR AX, AX
MOV CX, 0FFFFH
REPNE SCASB
NOT CX
DEC CX
MOV BX, WORD PTR D005EH
CALL NEAR PTR Procedure0805
L06BAH: POP DI
MOV SP, BP
POP BP
RET 0002H
Procedure0691 ENDP
Procedure06C1 PROC NEAR
L06C1H DB 0000H
Procedure06C1 ENDP
Procedure06C2 PROC NEAR
PUSH BP
MOV BP, SP
PUSH BX
PUSH ES
PUSH CX
MOV CX, 1000H
XCHG CX, WORD PTR D009EH
PUSH CX
PUSH AX
CALL NEAR PTR Procedure080C
POP BX
POP WORD PTR D009EH
POP CX
MOV DX, DS
OR AX, AX
JZ L06E4H
POP ES
POP BX
JMP SHORT L06E9H
L06E4H: MOV AX, CX
JMP NEAR PTR L0627H
L06E9H: MOV SP, BP
POP BP
RET
Procedure06C2 ENDP
Procedure06ED PROC NEAR
L06EDH DB 0000H
PUSH CX
PUSH DI
TEST BYTE PTR [BX+2], 1
JZ L0759H
CALL NEAR PTR Procedure07E0
MOV DI, SI
MOV AX, WORD PTR [SI]
TEST AL, 1
JZ L0704H
SUB CX, AX
DEC CX
L0704H: INC CX
INC CX
MOV SI, WORD PTR [BX+4]
OR SI, SI
JZ L0759H
ADD CX, SI
JAE L071AH
XOR AX, AX
MOV DX, 0FFF0H
JCXZ L0748H
JMP SHORT L0759H
L071AH: PUSH SS
POP ES
MOV AX, WORD PTR D009EH
CMP AX, 1000H
JZ L073BH
MOV DX, 8000H
L0728H: CMP DX, AX
JB L0732H
SHR DX, 1
JNZ L0728H
JMP SHORT L0754H
L0732H: CMP DX, 8
JB L0754H
SHL DX, 1
MOV AX, DX
L073BH: DEC AX
MOV DX, AX
ADD AX, CX
JAE L0744H
XOR AX, AX
L0744H: NOT DX
AND AX, DX
L0748H: PUSH DX
CALL NEAR PTR Procedure077A
POP DX
JAE L075CH
CMP DX, -16
JZ L0759H
L0754H: MOV AX, 0010H
JMP SHORT L073BH
L0759H: STC
JMP SHORT L0777H
L075CH: MOV DX, AX
SUB DX, WORD PTR ES:[BX+4]
MOV WORD PTR [BX+4], AX
MOV WORD PTR [BX+10], DI
MOV SI, WORD PTR [BX+12]
DEC DX
MOV WORD PTR [SI], DX
INC DX
ADD SI, DX
MOV WORD PTR [SI], 0FFFEH
MOV WORD PTR [BX+12], SI
L0777H: POP DI
POP CX
RET
Procedure06ED ENDP
Procedure077A PROC NEAR
MOV DX, AX
TEST BYTE PTR [BX+2], 4
JZ L0784H
JMP SHORT L07D5H
L0784H: PUSH DX
PUSH CX
PUSH BX
MOV SI, WORD PTR [BX+6]
MOV BX, WORD PTR CS:L01A4H
XOR CX, CX
OR DX, DX
JNZ L079CH
TEST BX, 0010H
JNZ L07DBH
INC CX
L079CH: MOV AX, 0022H
TEST BX, 0001H
JNZ L07A8H
MOV AX, 0020H
L07A8H: PUSH SI
PUSH CX
PUSH DX
PUSH AX
CALL FAR PTR GlobalRealloc
OR AX, AX
JZ L07DBH
CMP AX, SI
JNZ L07D5H
PUSH SI
CALL FAR PTR GlobalSize
OR DX, AX
JZ L07D5H
POP BX
POP CX
POP DX
MOV AX, DX
TEST BYTE PTR [BX+2], 4
JZ L07D2H
DEC DX
MOV WORD PTR [BX-2], DX
L07D2H: CLC
JMP SHORT L07DFH
L07D5H: MOV AX, 0012H
JMP NEAR PTR L0627H
L07DBH: POP BX
POP CX
POP DX
STC
L07DFH: RET
Procedure077A ENDP
Procedure07E0 PROC NEAR
PUSH DI
MOV SI, WORD PTR [BX+10]
CMP SI, WORD PTR [BX+12]
JNZ L07ECH
MOV SI, WORD PTR [BX+8]
L07ECH: LODSW
CMP AX, -2
JZ L07FAH
MOV DI, SI
AND AL, -2
ADD SI, AX
JMP SHORT L07ECH
L07FAH: DEC DI
DEC DI
MOV SI, DI
POP DI
RET
Procedure07E0 ENDP
Procedure0800 PROC NEAR
PUSH BP
MOV BP, SP
POP BP
RET
Procedure0800 ENDP
Procedure0805 PROC NEAR
MOV AX, 0014H
JMP NEAR PTR L0627H
L080BH DB 0000H
Procedure0805 ENDP
Procedure080C PROC NEAR
PUSH BP
MOV BP, SP
SUB SP, 4
MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR LockSegment
MOV AX, 0020H
PUSH AX
CMP WORD PTR [BP+4], 0
JZ L082AH
MOV AX, WORD PTR [BP+4]
JMP SHORT L082DH
L082AH: MOV AX, 0001H
L082DH: PUSH AX
CALL FAR PTR LocalAlloc
MOV WORD PTR [BP-2], AX
MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR UnlockSegment
MOV AX, WORD PTR [BP-2]
MOV SP, BP
POP BP
RET
Procedure080C ENDP
Procedure0846 PROC NEAR
PUSH BP
MOV BP, SP
PUSH WORD PTR [BP+4]
CALL FAR PTR LocalFree
MOV SP, BP
POP BP
RET
Procedure0846 ENDP
Procedure0855 PROC NEAR
NOP
PUSH BP
MOV BP, SP
SUB SP, 4
CMP WORD PTR [BP+4], 0
JNZ L086EH
PUSH WORD PTR [BP+6]
CALL NEAR PTR Procedure080C
ADD SP, 2
JMP SHORT L08A2H
NOP
L086EH: MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR LockSegment
PUSH WORD PTR [BP+4]
CMP WORD PTR [BP+6], 0
JZ L0886H
MOV AX, WORD PTR [BP+6]
JMP SHORT L0889H
NOP
L0886H: MOV AX, 0001H
L0889H: PUSH AX
MOV AX, 0062H
PUSH AX
CALL FAR PTR LocalRealloc
MOV WORD PTR [BP-2], AX
MOV AX, 0FFFFH
PUSH AX
CALL FAR PTR UnlockSegment
MOV AX, WORD PTR [BP-2]
L08A2H: MOV SP, BP
POP BP
RET
Procedure0855 ENDP
Procedure08A6 PROC NEAR
PUSH BP
MOV BP, SP
PUSH WORD PTR [BP+4]
CALL FAR PTR LocalSize
MOV SP, BP
POP BP
RET
Procedure08A6 ENDP
Procedure08B5 PROC NEAR
NOP
Procedure08B5 ENDP
END L01ACH